An adaptive filter utilized in a typical speakerphone system is operable to estimate the characteristics of the echo path and generate a simulated echo signal from the digitized far-end user's signal. It includes a subtractor that subtracts the simulated echo signal from the near-end echo signal and generates a residual signal or error. The adaptive filter is operable to bring the simulated echo signal as close to the actual echo signal as possible so as to force the residual signal to converge as close as possible to zero.
Most adaptive filters utilize an impulse response type of filter which requires data and coefficients to be stored in memory and a plurality of multiplications and additions to be performed on data and associated coefficients. The precision of the filter depends upon the length and format of the digital word that is utilized to represent the data and the coefficients. A fixed point representation gives the maximum precision at the cost of additional hardware while a floating point representation sacrifices accuracy to get a bigger range of possible values. Block scale floating point representation uses a single exponent value that scales all the mantissas by the same amount. The value of the exponent depends on the size of the largest number that is stored in the memory at any given time. In an application that uses a speech signal, the block scale floating point representation is not appropriate for storing data since large variations in the magnitude of the input signal over short periods of time would cause the exponent to become large and scale down the small values stored in the memory to a considerable extent. This would result in a significant loss in precision of the data stored in the memory. The floating point representation is most appropriate for this application as it allows maximum precision for small numbers and truncates the least significant bits from the large numbers.